<?php
/**
 * Service_Translate
 *
 * Класс Service_Translate осуществляет работу с переводами
 *
 * @author Дмитий Кузьма <kouzma.d@gmail.com>
 * @version 2.0
 */
class Service_Translate {
	
	private static $_lang = 'ru';
	private static $_langUrl = 'rus';
	private static $_arrWords = null;
	
	/**
	 * Устанавливает язык 
	 * 
	 * @param string $lang - язык
	 */
	public static function setLang($lang) {
		$lang = substr($lang, 0, 2);
		switch ($lang) {
			case 'en': 
				self::$_lang = $lang;
				self::$_langUrl = 'eng';
				break;
			case 'ru': 
				self::$_lang = $lang;
				self::$_langUrl = 'rus'; 
				break;
			default: 
				self::$_lang = 'ru';
				self::$_langUrl = 'rus';
  	}
  	self::$_arrWords = null;
	}
	
	/**
	 * Возвращает текущее значение языка
	 * 
	 */
	public static function getLang() {
		return self::$_lang;
	}
	
	/**
	 * Возвращает текущее значение языка для url
	 * 
	 */
	public static function getLangForUrl() {
		return self::$_langUrl;
	}
	
  /**
   * Возвращает перевод нужной фразы для текущего языка
   * 
   * @param string $value
   */
	public static function getText($value) {
		if (!self::$_arrWords) {
  	  switch (self::$_lang) {
			  case 'en': self::$_arrWords = Language_En::$arrWords; break;
			  case 'ru': self::$_arrWords = Language_Ru::$arrWords; break;
  	  }
  	}
  	
  	if (isset(self::$_arrWords[$value])) { // Если есть перевод
	  	$args = func_get_args();
			if (sizeof($args) > 1) {
				$retString = self::$_arrWords[$value];
				foreach ($args as $i => $arg) { // Если есть доп. аргументы, то делаем на их основе автозамену
					if ($i) {
					  $retString = preg_replace("/%s" . $i . "/", $arg, $retString);
					}
				}
				return $retString;
			}
  		return self::$_arrWords[$value];
  	}
  	else return null;
  }
  
  /**
   * Определяет язык ввода по строке, набранной пользователем
   * 
   * @param String $string
   */
  public static function getLangByString($string) {
  	Service_Debug::setDebug();
  	$string = self::stripCharacters($string);
  	$code = Service_Function::uniord($string);
  	//echo $code;
  	if ($code >= 65 && $code <= 90 || $code >= 97 && $code <= 122) return 'en';
  	if ($code >= 1040 && $code <= 1105) return 'ru';
  	return false;	  
  }
  
  public static function stripCharacters($text) {
  	Service_Debug::setDebug();
		$text = preg_replace("/[^а-яА-ЯA-Za-z]/","",$text);
		return $text;  	
  }  
}
?>